/**
 * 任务调度器使用示例
 */
import { taskScheduler } from "./taskScheduler.js";

/**
 * 示例任务数据
 */
const exampleTasks = [
  {
    id: 1245,
    name: 'Threads发帖（小时）',
    platformAccount: 'naitu1563',
    platformAccountNickName: '尤克李李',
    platformId: 30368,
    composeData: [
      {
        name: 'td_posting',
        label: 'threads发帖（小时）',
        config: [
          {
            name: 'ig_posting',
            label: '养号策略',
            type: 'string',
            value: '发帖任务'
          },
          {
            name: 'interval_posting',
            label: '间隔小时',
            type: 'number',
            value: 7
          },
          {
            name: 'max_count',
            label: '最大随机值',
            type: 'number',
            value: 1.2
          },
          {
            name: 'min_count',
            label: '最大随机值',
            type: 'number',
            value: 0.8
          },
          {
            name: 'task_out_time',
            label: '刷视频任务超时重跑时间（分钟）',
            type: 'number',
            value: 60
          }
        ]
      }
    ],
    templateId: 107,
    operatingTimeRanges: {
      offsetMinutesMin: 0,
      offsetMinutesMax: 0,
      ranges: [ { startTime: '09:00', endTime: '23:29' } ]
    },
    createTime: 1744102916000
  }
];

/**
 * 启动任务调度器
 */
async function startSchedulerDemo() {
  console.log("[调度器示例] 开始执行任务调度示例");

  // 启动调度器处理任务
  taskScheduler.startScheduler(exampleTasks);

  console.log("[调度器示例] 已启动任务调度");

  // 示例：10分钟后停止所有任务
  setTimeout(async () => {
    console.log("[调度器示例] 停止所有任务");
    await taskScheduler.stopAllTasks();
  }, 10 * 60 * 1000);
}

/**
 * 如何在你的应用中使用调度器
 *
 * 1. 导入任务调度器:
 * import { taskScheduler } from "./utils/taskScheduler.js";
 *
 * 2. 准备任务数据:
 * const tasks = [...您的任务数据...];
 *
 * 3. 启动调度器:
 * taskScheduler.startScheduler(tasks);
 *
 * 4. 当需要停止时:
 * await taskScheduler.stopAllTasks();
 *
 * 5. 如果只需要取消特定任务:
 * await taskScheduler.cancelTask(taskId);
 *
 * 注意: 调度器会根据任务的operatingTimeRanges自动在指定时间范围内执行任务,
 * 并在时间范围外自动暂停。每个任务在完成后会根据interval_posting等配置
 * 自动设置下一次执行时间。
 */

// 如果直接运行此文件，则启动示例
if (require.main === module) {
  startSchedulerDemo();
}

export { startSchedulerDemo, exampleTasks };